<?php
/**
 * User: @lixu
 * Date: 2019-02-27
 * Time: 10:25
 */

namespace Biz\tools;


class CheckActivityTime
{
    /**
     * 验证时间的规则
     * @param $info
     * @param $activityTime
     * @return array
     */
    public static function rules($info, $activityTime)
    {
        // 当前活动的开始时间大于其他活动的开始时间且小于其他活动的结束时间,为重叠条件一
        // 当前活动的结束时间大于其他活动的开始时间且小于其他活动的结束时间,为重叠条件二
        // 当前活动的开始时间大于其他活动的开始时间且当前活动的结束时间大于其他活动的结束时间,为重叠条件三
        // 如果开始结束时间与其他活动的开始结束时间相等. 为重叠条件四
        $checkStartTime = strtotime($info['start_time']);
        $checkEndTime = strtotime($info['end_time']);
        $startTime = strtotime($activityTime['start_time']);
        $endTime = strtotime($activityTime['end_time']);

        $invalidWhereOne = ($checkStartTime < $startTime) && ($checkEndTime > $startTime);
        $invalidWhereTwo   = ($checkStartTime < $endTime) && ($checkEndTime > $endTime);
        $invalidWhereThree = ($checkStartTime >= $startTime) && ($checkEndTime <= $endTime);
        $invalidWhereFour = ($checkStartTime == $startTime) && ($checkEndTime == $endTime);

        return compact('invalidWhereOne', 'invalidWhereTwo', 'invalidWhereThree', 'invalidWhereFour');
    }

    /**
     * 验证时间的规则
     * @param $info
     * @param $activityTime
     * @return bool
     */
    public static function simpleRules($info, $activityTime)
    {
        // 当前活动的开始时间大于其他活动的开始时间且小于其他活动的结束时间,为重叠条件一
        // 当前活动的结束时间大于其他活动的开始时间且小于其他活动的结束时间,为重叠条件二
        // 当前活动的开始时间大于其他活动的开始时间且当前活动的结束时间大于其他活动的结束时间,为重叠条件三
        // 如果开始结束时间与其他活动的开始结束时间相等. 为重叠条件四
        $checkStartTime = strtotime($info['start_time']);
        $checkEndTime = strtotime($info['end_time']);
        $startTime = strtotime($activityTime['start_time']);
        $endTime = strtotime($activityTime['end_time']);

        if ($endTime <= $checkStartTime) {
            return true;
        }

        if ($startTime >= $checkEndTime) {
            return true;
        }

        return false;
    }
}